ZenlogicサーバーではPHPファイルのキャッシュがきついようだ。
どうにもならなかったので、Zend OPCacheを停止してみた。
.htaccess
php_flag opcache.enable Off
でいいかなと思ったんだけどダメ。WordpressのテーマなどのPHP更新して操作するとサーバーエラーがでる。(再読み込みすると消える)使いにくい。
ZenlogicサーバーではPHPファイルのキャッシュがきついようだ。
どうにもならなかったので、Zend OPCacheを停止してみた。
.htaccess
php_flag opcache.enable Off
でいいかなと思ったんだけどダメ。WordpressのテーマなどのPHP更新して操作するとサーバーエラーがでる。(再読み込みすると消える)使いにくい。
PHP frameworkの「Laravel 」をざっくりと初めて見たいと思います。
ざっくりなのでまずはインストールをします。
SELINUXは無効で。再起動後の処理っす。
vi /etc/selinux/config SELINUX=disabled
あやまって、「SELINUXTYPE=disabled」って記述してしまうのは私ぐらいだろうか…きっとこの時、あーめんどーって感じで記述してしまうんだろうなきっと・・・。
PHP7.4をインストールする。手順としては↓の感じphp -vで7.4になっていることを確認。
# EPELリポジトリを追加 dnf -y install epel-release # Remiリポジトリを追加 dnf -y install http://rpms.famillecollet.com/enterprise/remi-release-8.rpm # PHP 7.4 インストール dnf -y module install php:remi-7.4 # PHP拡張機能インストール dnf install -y php-bcmath php-mcrypt php-pdo php-xml php-tokenizer php-mysqlnd php-pecl-xdebug php-gd php-intl php-zip php-opcache php -v
Composer のインストール
# インストーラーのダウンロード wget https://getcomposer.org/installer -O composer-installer.php # インストール php composer-installer.php --filename=composer --install-dir=/usr/local/bin # ねんのためアップデート composer self-update
次に「laravel」をインストールする
composer global require laravel/installer # bash_profileにパスを追加 vi ~/.bash_profile # PATH=「$HOME/.config/composer/vendor/bin」を追加 PATH=$PATH:$HOME/bin:$HOME/.config/composer/vendor/bin # .bash_profileを読み込む source ~/.bash_profile
これでlaravelの利用準備が整いました。
プロジェクトを準備します。プロジェクトごと1アプリです。
laravel new [project_name]
※どこに設置するのか考えて行います。
「storage」と「cache」にWEBサーバーからの書き込みができる費用がある
chown -R apache:apache [プロジェクトパス]/storage chown -R apache:apache [プロジェクトパス]/bootstrap/cache
公開フォルダは「public」になるように設定します。
その後、ブラウザでアクセスすると下記のように表示されます。
そーいえば、初期ページ以外でコントローラ―を追加してnot fundとなった場合は
WEB側の設定(httpd.conf等)で「AllowOverride All」とすれば可能だと思う。
■メモ
ルート情報:routesの中に格納
view系:「resources」>「views」の中
コントローラ―:コマンドで作成する。「app」>「http」>「Controllers」のフォルダの中。
※php artisan makecontroller コントローラー名
コントローラ―を追加した場合は「ルート情報にコントローラ―情報を追加」する
■コマンド
・ルーティング定義の一覧を表示します。
php artisan route:list
PHPからVIMEO APIの接続を試してみます。
https://developer.vimeo.com/api/libraries
リファレンスの中を見るとテストができるのでそこで試してみてもいいかも
https://developer.vimeo.com/api/reference
https://developer.vimeo.com/apps
※アップロードにはアプリを作った後に申請しないといけなくてこれが5日間程度かかると思ってよい。営業日ベースなら1週間って感じ。長いよ~~。
とりあえず、自分自身の情報を見てみる
<?php require 'vimeo.php/autoload.php'; use Vimeo\Vimeo; $client_id = 'xxxxxxxxxxxxxx'; $client_secret = 'xxxxxxxxxxxxxx'; $access_token = 'xxxxxxxxxxxxxx'; //Vimeoに接続 $lib = new \Vimeo\Vimeo($client_id, $client_secret, $access_token); //自身の情報を取得 $user = $lib->request('/me'); echo '<pre>'; print_r($user); echo '</pre>'; ?>
って実行したらエラー「 syntax error, unexpected ‘?’ in /vimeo.php/src/Vimeo/Vimeo.php on line 163」およよ??
163行目の?stringは、PHP7.1以上で有効だったよ。?をとってみたらOK。まあ、PHP7.0でテストするのもどうなのかと思って、PHP7.1に変更してみた。
public function getToken(): ?string ↓ public function getToken(): string
とりあえず戻り値の最初は
Array ( [body] => Array ( [uri] => /users/xxxxxx [name] => xxxxxx [link] => https://vimeo.com/userxxxxxxxxx [location] => [bio] => [short_bio] => [created_time] => 2020-02-26T09:50:36+00:00
ってなところ。
自分自身のアカウント情報:$lib->request(‘/me’);
自分自身のビデオリストを取得:$lib->request(‘/me/videos’)
ってできる。
アップロードできるのかな?
APIのページを参考に…https://developer.vimeo.com/api/guides/videos/upload
APIをインストール。これでやらないと、必要なものを自分で集めるのが大変!!
composer require vimeo/vimeo-api
あとは、APIドキュメントページを参考に記述すればアップロードまで完了!!
以外とここまでは簡単だった。
操作として
1.アップロード
2.設定の変更
となるようだ。
・VIMEO.COMで非公開
$client->request($uri, array( 'privacy' => array( 'view' => 'disable', ), ), 'PATCH');
コメント禁止
'comments'=>'nobody',
リファレンスによると
$client->request($uri . '/privacy/domains/example.com', 'PUT'); $client->request($uri, array( 'privacy' => array( 'embed' => 'whitelist' ) ), 'PATCH'); echo $uri . ' will only be embeddable on "http://example.com".';
って感じです。
PUTでドメインを追加して、この動画は、特定のドメインからだけだよ==って感じ。
えーと、このあたりは「https://developer.vimeo.com/api/reference/videos#embed-privacy」も参考にしておく必要がある。
で、ドキュメント通りに行っても動かん!!ってはまりました。
まず、1行目のドメインを追加する箇所を実行したときにレスポンスが「[status] => 405」」だと。ちなみに[Allow] => PUT,DELETE,OPTIONSって言われています。なのでPUTできていない。
APIのコードを読む限り、requestのパラメーターって3番目がMETHODの指定。おろ?ドキュメントは2番目。
request($url, $params = array(), $method = 'GET', $json_body = true, array $headers = array()): array
じゃあ、2番目のパラメーターをarray()で処理してみた。
$client->request($uri . '/privacy/domains/example.com', array(),'PUT');
こんどは、[status] => 400 で戻ってきたぁ。
で、今度はエラーメッセージあり。[error] => The video\’s embed privacy isn’t set to specific domains.
whiteリスト対応になってないっぽい。それなので、順番を動画をwhitelistに対応にしてからドメインを追加してみた。
そしたら[status] => 200 でwhitelistに追加できた。めでたしめでたし。
特定のドメインだけをしている場合にWordPressの管理画面で動画を見ようとすると…
「大変申し訳ございません」って見れない…
VIMEO HELPを見ると
設定にドメインがリストされているにも関わらずエラーが引き続き表示される場合は、アドレスバーで指定されているドメインがVimeoプレーヤーに送信されたドメインと異なる場合があり、この場合プライバシーに関するエラーが表示されます。 リファラーがプレーヤーのiframeに到達できないよう、サイトのHTMLコードがブロックしている可能性がないかウェブデベロッパにお問い合わせください。
えーと、iframeを読み込むときにリファラーを送っていないんだと。。
では実際に…
・再生可能な場合
・再生不可能な場合
リファラーがいません。WordPressさん。。。
ということでmetaでリファラーすればきっと表示。
「動画」>「プリセットを埋め込む」で新規作る。
PlayerのAPIで埋め込み指定するよりもこっちで指定したほうが良い。ロゴ削除や変更も可能だし
PHPでたまにおやおやっていうエラーを出してしまったときのメモ。
エラー内容「Cannot use a scalar value as an array」
翻訳すると「スカラー値を配列として使用できません」
え?っと、、、
ちゃんと変数の内容を追ってみるとわかると思いますが、
例えば:X=1としておいたのに途中からX[‘id’] =12345ってしているケースに発生します。
たぶん、最初は値を入れておけばよかったのですが後ほどで配列しなければならないっていうときに発生させてしまう。エラーです。
オレ(1)、Xっていう変数に入っていていっぱいなのに、勝手に配列ってして拡張されてオレ(1)はどうしたらいいんだ??っていう感じです。
PHPで「should not be called statically」ってエラーだって言われたら
FUNCTIONの定義に「static」を追加するのを忘れている。
って思っていればよいかな。
McAfeeのウェブアドバイザーでダウンロードファイルがブロックされるなど予期しない動作が発生した場合は下記の手順で信用サイトに対象サイトを追加して利用することが可能です。
※不用意に信用サイトを追加しないほうが良いです。
(1)「ツール」>「マカフィー ウェブアドバイザー」をクリックする
(2)信用サイトを追加する
(1)マカフィーのアイコンをクリック→「オプション」をクリックします。
(2)信用サイトを追加する
※インターネットエクスプローラーと同じ。
Fuelphpでメール送信時のエラーキャッチを「EmailValidationFailedException」「EmailSendingFailedException」だけでよいのかなって思っていたけど、SMTPサーバーに接続できないときの例外エラーはキャッチされなかった。
っということでメール送信時に
$email = Email::forge(array(必要な内容を記述)); try { $email->send(); } catch(\EmailValidationFailedException $e) { // バリデーションが失敗したとき echo = 'メールアドレスが正しくないため送信できませんでした。:'.$e->getMessage(); } catch(\EmailSendingFailedException $e) { // ドライバがメールを送信できなかったとき echo 'メール送信に失敗しました。:'.$e->getMessage(); } catch (\Exception $e) { echo = 'メール送信時のその他のエラーが発生しました。:'.$e->getMessage(); }
「Exception」をcatchを付けてそれ以外のエラーをキャッチすることにした。
どのクラウドサービスだって停止することあるんだから、SMTPサーバーへのConnectエラーも考慮しなければならない。
「PHP」で「bcmul」関数利用しようとしたら「PHP Fatal error: Call to undefined function bcmul()」エラーがでた。
php-bcmathのパッケージが不足していたのでインストールをしました。
# yum install php-bcmath
FuelPHPでAJAXのCSR対策のメモです。忘れちゃうので。
ViewでTOKENを呼び出す→POSTでTOKENを送るようにする
・js_fetch_tokenの呼び出し
<?php echo Security::js_fetch_token();?>
・AJAXを作る
function save() { $.ajax({ type:'post', url: "送信先URL", cache: false, data: { fuel_csrf_token: fuel_csrf_token() }, statusCode: { 404: function(){ } }, }).done(function(data, textStatus, jqXHR){ //結果を受けたった処理 }).fail(function(data, textStatus, errorThrown){ //送信失敗した時の処理 }); }
※「fuel_csrf_token」は、Configの「csrf_token_key」を変更している場合は、変更した名前を呼び出すようにする。
例:Config::get(‘security.csrf_token_key’);
・PHP側処理
if (Security::check_token()) { //成功したときの処理 }
こんな感じで処理が可能。
PHPEXCELで動作させるときに利用する関数のメモ。FuelPHPで組み合わせて利用のメモです。
\Package::load('excel');
$excel = \PHPExcel_IOFactory::load($template_path);
PHPExcel_Cell::stringFromColumnIndex( 列の数値 )
とりあえず徐々に追加予定。